主题
读取游标 - Read
函数简介
从STMT指针中读取下一行数据,通常用于遍历查询结果集。
接口名称
ReadDLL调用
c
int Read(long ola, long stmt);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| ola | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
| stmt | 长整数型 | 数据库语句对象指针,由 ExecuteReader 接口返回。 |
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long db = ola.OpenDatabase("data/app.db", "");
if (db != 0) {
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if (ola.Read(stmt) == 1) {
int id = ola.GetInt32(stmt, 0);
std::string name = ola.GetString(stmt, 1);
}
ola.Finalize(stmt);
}
ola.CloseDatabase(db);
}csharp
using OLAPlug;
var ola = new OLAPlugServer();
long db = ola.OpenDatabase("data/app.db", "");
if (db != 0)
{
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0)
{
if (ola.Read(stmt) == 1)
{
int id = ola.GetInt32(stmt, 0);
string name = ola.GetString(stmt, 1);
}
ola.Finalize(stmt);
}
ola.CloseDatabase(db);
}python
from OLAPlugServer import OLAPlugServer
ola = OLAPlugServer()
db = ola.OpenDatabase("data/app.db", "")
if db != 0:
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)")
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)")
stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1")
if stmt != 0:
if ola.Read(stmt) == 1:
row_id = ola.GetInt32(stmt, 0)
name = ola.GetString(stmt, 1)
ola.Finalize(stmt)
ola.CloseDatabase(db)java
import com.olaplug.OLAPlugServer;
OLAPlugServer ola = new OLAPlugServer();
long db = ola.OpenDatabase("data/app.db", "");
if (db != 0) {
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if (ola.Read(stmt) == 1) {
int id = ola.GetInt32(stmt, 0);
String name = ola.GetString(stmt, 1);
}
ola.Finalize(stmt);
}
ola.CloseDatabase(db);
}cpp
var ola = com("OlaPlug.OlaSoft")
var db = ola.OpenDatabase("data/app.db", "")
if(db) {
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)")
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)")
var stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1")
if(stmt) {
if(ola.Read(stmt) == 1) {
var id = ola.GetInt32(stmt, 0)
}
ola.Finalize(stmt)
}
ola.CloseDatabase(db)
}vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
db = ola.OpenDatabase("data/app.db", "")
If db <> 0 Then
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)")
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)")
stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1")
If stmt <> 0 Then
If ola.Read(stmt) = 1 Then
id = ola.GetInt32(stmt, 0)
End If
ola.Finalize(stmt)
End If
ola.CloseDatabase(db)
End Iftext
.局部变量 ola, OLAPlug
ola.创建 ()
db = ola.OpenDatabase (“data/app.db“, ““)
.如果真 (db ≠ 0)
ola.ExecuteSql (db, “CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)“)
ola.ExecuteSql (db, “INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)“)
stmt = ola.ExecuteReader (db, “SELECT id, name, score FROM users WHERE id=1“)
.如果真 (stmt ≠ 0)
.如果真 (ola.Read (stmt) = 1)
id = ola.GetInt32 (stmt, 0)
.如果真结束
ola.Finalize (stmt)
.如果真结束
ola.CloseDatabase (db)
.如果真结束aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var db = ola.OpenDatabase("data/app.db", "");
if(db){
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
var stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1");
if(stmt){
if(ola.Read(stmt) == 1){
var id = ola.GetInt32(stmt, 0);
}
ola.Finalize(stmt);
}
ola.CloseDatabase(db);
}text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
长整数 db = ola.OpenDatabase("data/app.db", "")
如果真 (db ≠ 0)
{
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)")
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)")
长整数 stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1")
如果真 (stmt ≠ 0)
{
如果真 (ola.Read(stmt) = 1)
{
整数 id = ola.GetInt32(stmt, 0)
}
ola.Finalize(stmt)
}
ola.CloseDatabase(db)
}cpp
#include "OLAPlugServer.h"
OLAPlugServer ola;
long db = ola.OpenDatabase("data/app.db", "");
if (db != 0) {
ola.ExecuteSql(db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ola.ExecuteSql(db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ola.ExecuteReader(db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if (ola.Read(stmt) == 1) {
int32_t id = ola.GetInt32(stmt, 0);
}
ola.Finalize(stmt);
}
ola.CloseDatabase(db);
}原生 DLL 调用
cpp
long instance = CreateCOLAPlugInterFace();
long db = OpenDatabase(instance, "data/app.db", "");
if (db != 0) {
ExecuteSql(instance, db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ExecuteSql(instance, db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ExecuteReader(instance, db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if (ola.Read(stmt) == 1) {
int id = ola.GetInt32(stmt, 0);
std::string name = ola.GetString(stmt, 1);
}
Finalize(instance, stmt);
}
CloseDatabase(instance, db);
}csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
long instance = CreateCOLAPlugInterFace();
long db = OpenDatabase(instance, "data/app.db", "");
if (db != 0)
{
ExecuteSql(instance, db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ExecuteSql(instance, db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ExecuteReader(instance, db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if (ola.Read(stmt) == 1)
{
int id = ola.GetInt32(stmt, 0);
string name = ola.GetString(stmt, 1);
}
Finalize(instance, stmt);
}
CloseDatabase(instance, db);
}python
from ctypes import CDLL, c_int, c_int64
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
db = ola.OpenDatabase(instance, b"data/app.db", b"")
if db:
ExecuteSql(instance, db, "CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, score REAL)");
ExecuteSql(instance, db, "INSERT OR REPLACE INTO users VALUES(1,'ola',98.5)");
long stmt = ExecuteReader(instance, db, "SELECT id, name, score FROM users WHERE id=1");
if (stmt != 0) {
if ola.Read(stmt) == 1:
row_id = ola.GetInt32(stmt, 0)
name = ola.GetString(stmt, 1)
Finalize(instance, stmt);
}
ola.CloseDatabase(instance, db)返回值
1 成功读取一行数据,0 没有更多数据或读取失败。
注意事项
- 该函数用于逐行读取查询结果集,通常与 ExecuteReader 配合使用。
- 使用完STMT指针后,应调用 Finalize 释放资源,避免内存泄漏。
